package designPattern.factorPattern.abstractFactorPattern;

/**
 * 抽象工厂模式
 *
 * @author nanxin.chen
 * @date 2015/8/28
 */
public class Main {
    public static void main(String[] args) {
        IAbstractFactory af = new FactoryChina();
        af.getFruit("apple").eat();
        af.getMeat("pig").eat();
    }
}

/*
理解：
抽象工厂模式：
说个例子：
两个接口：  Fruit 和 Meat，都定义了方法eat()
分别两个实现类：
FruitC，FruitA；MeatC，MeatA
“C”表示来自中国，“A”表示来自美国

两个工厂类：
FactoryC，FactoryA
中国工厂，美国工厂

一个抽象工厂
AbstractFactory
定义了两个方法：
getFruit()，getMeat()

现在要吃中国水果，
那么就用FactoryC实例化AbstractFactory，和中国工厂联系
然后用AbstractFactory的对象调用getFruit()，找水果吃
最后调用eat()，吃水果
 */